﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Padelcenter.Common;

namespace Padelcenter.DataAccess
{
    #region " SELECT "
    #region " Propiedad Select "
    public class Propiedad_Select : DataAccessBase
    {
        public Propiedad_Select()
        {
            StoredProcedureName = StoredProcedure.Name.Propiedad_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Propiedad_Select_Prm propiedad_Select_Prm = new Propiedad_Select_Prm(this.Propiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedad_Select_Prm.Parameters);

            return ds;
        }
        
        private Propiedad _propiedad;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }
    }

    public class Propiedad_Select_Prm
    {
        public Propiedad_Select_Prm(Propiedad propiedad)
        {
            this.Propiedad = propiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idPropiedad"        , this.Propiedad.IdPropiedad ),
                new SqlParameter( "@idTipoPropiedad"    , this.Propiedad.TipoPropiedad.IdTipoPropiedad ),
                new SqlParameter( "@ConFiltroActivo"    , this.Propiedad.ConFiltroActivo),
                new SqlParameter( "@Activo"             , this.Propiedad.Activo)
            };

            this.Parameters = parameters;
        }

        private Propiedad _propiedad;
        private SqlParameter[] _parameters;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }
        

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " Propiedad Descripcion "
    public class PropiedadDescripcion_Select : DataAccessBase
    {
        public PropiedadDescripcion_Select()
        {
            StoredProcedureName = StoredProcedure.Name.PropiedadDescripcion_SELECT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            PropiedadDescripcion_Select_Prm propiedadDescripcion_Select_Prm = new PropiedadDescripcion_Select_Prm(this.PropiedadDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedadDescripcion_Select_Prm.Parameters);

            return ds;
        }

        private PropiedadDescripcion _propiedadDescripcion;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }
    }

    public class PropiedadDescripcion_Select_Prm
    {
        public PropiedadDescripcion_Select_Prm(PropiedadDescripcion propiedadDescripcion)
        {
            this.PropiedadDescripcion = propiedadDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idPropiedad"        , this.PropiedadDescripcion.Propiedad.IdPropiedad ),
                new SqlParameter( "@idIdioma"           , this.PropiedadDescripcion.Idioma.IdIdioma)
            };

            this.Parameters = parameters;
        }

        private PropiedadDescripcion _propiedadDescripcion;
        private SqlParameter[] _parameters;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion

    #region " INSERT "
    #region " Propiedad Insert "
    public class Propiedad_Insert : DataAccessBase
    {
        public Propiedad_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.Propiedad_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Propiedad_Insert_Prm propiedad_Insert_Prm = new Propiedad_Insert_Prm(this.Propiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedad_Insert_Prm.Parameters);

            return ds;
        }

        private Propiedad _propiedad;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }
    }

    public class Propiedad_Insert_Prm
    {
        public Propiedad_Insert_Prm(Propiedad propiedad)
        {
            this.Propiedad = propiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idTipoPropiedad"    , this.Propiedad.TipoPropiedad.IdTipoPropiedad ),
                new SqlParameter( "@Descripcion"        , this.Propiedad.Descripcion ),
                new SqlParameter( "@Valor"              , this.Propiedad.Valor),
                new SqlParameter( "@Activo"             , this.Propiedad.Activo)
            };

            this.Parameters = parameters;
        }

        private Propiedad _propiedad;
        private SqlParameter[] _parameters;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }


        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " Propiedad Descripcion Insert "
    public class PropiedadDescripcion_Insert : DataAccessBase
    {
        public PropiedadDescripcion_Insert()
        {
            StoredProcedureName = StoredProcedure.Name.PropiedadDescripcion_INSERT.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            PropiedadDescripcion_Insert_Prm propiedadDescripcion_Insert_Prm = new PropiedadDescripcion_Insert_Prm(this.PropiedadDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedadDescripcion_Insert_Prm.Parameters);

            return ds;
        }

        private PropiedadDescripcion _propiedadDescripcion;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }
    }

    public class PropiedadDescripcion_Insert_Prm
    {
        public PropiedadDescripcion_Insert_Prm(PropiedadDescripcion propiedadDescripcion)
        {
            this.PropiedadDescripcion = propiedadDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idPropiedad"        , this.PropiedadDescripcion.Propiedad.IdPropiedad ),
                new SqlParameter( "@idIdioma"           , this.PropiedadDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Descripcion"        , this.PropiedadDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private PropiedadDescripcion _propiedadDescripcion;
        private SqlParameter[] _parameters;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion

    #region " UPDATE "
    #region " Propiedad Update "
    public class Propiedad_Update : DataAccessBase
    {
        public Propiedad_Update()
        {
            StoredProcedureName = StoredProcedure.Name.Propiedad_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            Propiedad_Update_Prm propiedad_Update_Prm = new Propiedad_Update_Prm(this.Propiedad);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedad_Update_Prm.Parameters);

            return ds;
        }

        private Propiedad _propiedad;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }
    }

    public class Propiedad_Update_Prm
    {
        public Propiedad_Update_Prm(Propiedad propiedad)
        {
            this.Propiedad = propiedad;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idPropiedad"        , this.Propiedad.IdPropiedad ),
                new SqlParameter( "@idTipoPropiedad"    , this.Propiedad.TipoPropiedad.IdTipoPropiedad ),
                new SqlParameter( "@Descripcion"        , this.Propiedad.Descripcion ),
                new SqlParameter( "@Valor"              , this.Propiedad.Valor),
                new SqlParameter( "@Activo"             , this.Propiedad.Activo)
            };

            this.Parameters = parameters;
        }

        private Propiedad _propiedad;
        private SqlParameter[] _parameters;

        public Propiedad Propiedad
        {
            get { return _propiedad; }
            set { _propiedad = value; }
        }


        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion

    #region " Propiedad Descripcion Update "
    public class PropiedadDescripcion_Update : DataAccessBase
    {
        public PropiedadDescripcion_Update()
        {
            StoredProcedureName = StoredProcedure.Name.PropiedadDescripcion_UPDATE.ToString();
        }

        public DataSet Get()
        {
            DataSet ds;

            PropiedadDescripcion_Update_Prm propiedadDescripcion_Update_Prm = new PropiedadDescripcion_Update_Prm(this.PropiedadDescripcion);
            DataBaseHelper dbhelper = new DataBaseHelper(StoredProcedureName);
            ds = dbhelper.Run(base.ConnectionString, propiedadDescripcion_Update_Prm.Parameters);

            return ds;
        }

        private PropiedadDescripcion _propiedadDescripcion;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }
    }

    public class PropiedadDescripcion_Update_Prm
    {
        public PropiedadDescripcion_Update_Prm(PropiedadDescripcion propiedadDescripcion)
        {
            this.PropiedadDescripcion = propiedadDescripcion;
            this.BuildParams();
        }

        private void BuildParams()
        {
            SqlParameter[] parameters = 
            {
                new SqlParameter( "@idPropiedad"        , this.PropiedadDescripcion.Propiedad.IdPropiedad ),
                new SqlParameter( "@idIdioma"           , this.PropiedadDescripcion.Idioma.IdIdioma),
                new SqlParameter( "@Descripcion"        , this.PropiedadDescripcion.Descripcion)
            };

            this.Parameters = parameters;
        }

        private PropiedadDescripcion _propiedadDescripcion;
        private SqlParameter[] _parameters;

        public PropiedadDescripcion PropiedadDescripcion
        {
            get { return _propiedadDescripcion; }
            set { _propiedadDescripcion = value; }
        }

        public SqlParameter[] Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
    }
    #endregion
    #endregion
}
